From 02ae938c238c9d18448d17a8ec92c0edd8c17463 Mon Sep 17 00:00:00 2001 From: Bertrand Yuan Date: Tue, 16 Dec 2025 00:12:49 +0800 Subject: feat(back-end): introduce payload Payload is the next.js Headless CMS and App Framework, I would like to pick it up and modify it as it is MIT licensed. Many features in Payload is not applicable for our project. So, I modify it so that it is light and clear. --- src/app/(main)/(home)/posts/[slug]/page.client.tsx | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/app/(main)/(home)/posts/[slug]/page.client.tsx (limited to 'src/app/(main)/(home)/posts/[slug]/page.client.tsx') diff --git a/src/app/(main)/(home)/posts/[slug]/page.client.tsx b/src/app/(main)/(home)/posts/[slug]/page.client.tsx new file mode 100644 index 0000000..7a97f56 --- /dev/null +++ b/src/app/(main)/(home)/posts/[slug]/page.client.tsx @@ -0,0 +1,57 @@ +'use client'; +import { + UploadIcon as ShareIcon, + type UploadIconHandle as ShareIconHandle, +} from '@/components/icons/animated/upload'; +import { Icons } from '@/components/icons/icons'; +import { Button } from '@/components/ui/button'; +import { cn } from '@/lib/utils'; +import { Comments } from '@fuma-comment/react'; +import { redirect } from 'next/navigation'; +import { useRef } from 'react'; +import { toast } from 'sonner'; +import { useCopyToClipboard } from 'usehooks-ts'; + +export function Share({ url }: { url: string }): React.ReactElement { + const iconRef = useRef(null); + const [_, copyToClipboard] = useCopyToClipboard(); + + const onClick = async (): Promise => { + await copyToClipboard(`${window.location.origin}${url}`); + toast.success('Copied to clipboard!', { + icon: , + description: 'The post link has been copied to your clipboard.', + }); + }; + + return ( + + ); +} + +export function PostComments({ + slug, + className, +}: { slug: string; className?: string }) { + return ( + { + redirect('/login'); + }, + }} + /> + ); +} -- cgit v1.2.3